home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / programm / MM2_DEV / S / GME / GMEBASE.D < prev    next >
Encoding:
Modula Definition  |  1991-03-09  |  13.2 KB  |  378 lines

  1. DEFINITION MODULE GMEBase;
  2. (*$Z+*)
  3.  
  4. FROM SYSTEM IMPORT TSIZE;
  5. FROM GEMEnv IMPORT DeviceHandle, GemHandle;
  6.  
  7. (* Von EditConst *)
  8.  
  9. CONST
  10.         maxItem =               24; (* Magic Number in MENU.MOD *)
  11.         maxItemLen =            78;
  12.         maxLev =                1; (* MENU.Grenzen *)
  13.         
  14.         cRevision =             000011L;
  15.         cAllocate =             16;
  16.  
  17. (* Definition wichtiger ASCII-Codes (NICHT Tastencodes! *)
  18.  
  19.         eot =           32C; (* ??? *)
  20.  
  21.         cZeile =                1023;
  22.         cInfo =                 128;
  23.  
  24.         cTextUmbruch =          65;
  25.         cUeberschriftLaenge =   68;
  26.         cTabWeite =             8;
  27.         cKopfVorlauf =          0;
  28.         cKopfNachlauf =         2;
  29.         cZeilenAbstand =        2; (* 1/72 Zoll! Zahl unsinnig. *)
  30.         cSpiegel =              60;
  31.         cOffset =               0;
  32.         cSchreibZaehler =       1500;
  33.  
  34. (* Von EditType *)
  35.  
  36. TYPE    einStringPointer =      POINTER TO eineZeile;
  37.         eineZeile =             ARRAY [0..cZeile] OF CHAR;
  38.         eineInfo =              ARRAY [0..cInfo] OF CHAR;
  39.         CharSet =               SET OF CHAR;
  40.  
  41.         einLinePointer =        POINTER TO aLine;
  42.  
  43.         aLine =                 RECORD
  44.                                   vorige, naechste: einLinePointer;   (* 8 *)
  45.                                   ZeilPointer:      einStringPointer; (* 4 *)
  46.                                   laenge:           CARDINAL;         (* 2 *)
  47.                                   terminator:   ARRAY [0..1] OF CHAR; (* 2 *)
  48.                                 END (* aLine *);    (* TSIZE =          16 *)
  49.  
  50.         einMerkPointer =        POINTER TO einMerkPunkt;
  51.  
  52.         einMerkPunkt =          RECORD
  53.                                   zeilpos:      CARDINAL;             (* 2 *)
  54.                                   charpos:      CARDINAL;             (* 2 *)
  55.                                   merkline:     einLinePointer;       (* 4 *)
  56.                                   merkinfo:     einLinePointer;       (* 4 *)
  57.                                   nextMerk:     einMerkPointer;       (* 4 *)
  58.                                 END (* einMerkPunkt *); (* TSIZE =      16 *)
  59.  
  60.         MerkIndex =             (ErsteZeile, LaufendeZeile,
  61.                                  MerkPunkt1, MerkPunkt2, CompilerInfo,
  62.                                  BlockMarke1, BlockMarke2, PufferVergleich,
  63.                                  IndexListe, DruckerSteuer,
  64.                                  Protokoll, Textbausteine, Datei, M13, M14,
  65.                                  LetztePosition);
  66.  
  67.         einMerkSet =            SET OF MerkIndex;
  68.  
  69.         Mode =                  ((*TextModus*) Compiliert, ControlZeichen,
  70.                                  (* ControlZFiltern - fehlt leider *)
  71.                                  OverWrite, AutoIndent, Editiert,
  72.                                  WortSuche, GrossKleinSuche,
  73.                                  BlockIstMarkiert,
  74.                                  Changed,
  75.                                  IndexScan, (* Indexgenerierung - not used*)
  76.                                  Exit, (* 10 *)
  77.  
  78.                                  (* File-Flags: *)
  79.                                  KonfigSpeichern, AutoSave, TabFiltern,
  80.                                  DruckerfilterLaden, FontLaden, (* 15 *)
  81.  
  82.                                  (* *)
  83.                                  Flag16, Flag17,
  84.                                  Flag18, Flag19, (* 19 *)
  85.                                  Flag20, Flag21,
  86.                                  Flag22, Flag23, (* 23 *)
  87.                                  Flag24, Flag25,
  88.                                  Flag26, Flag27, (* 27 *)
  89.                                  Flag28,
  90.                                  MakeBAK (* .BAK, .OLD *),
  91.                                  Flag30, (* 30 *)
  92.                                  Expand0); (* 31 = 32 Bit *)
  93.  
  94.         Moden =                 SET OF Mode;
  95.  
  96.         einPufferPointer = POINTER TO einPufferDeskriptor;
  97.  
  98.         einPufferDeskriptor =
  99.                         RECORD
  100.                           MagicRevision:                LONGCARD;
  101.                           Puffer:                       einLinePointer;
  102.                                                                    (* 4 *)
  103.                           ZeilenAnzahl:                 CARDINAL;  (* 2 *)
  104.                           MerkPunkte:                   ARRAY MerkIndex OF
  105.                                                           einMerkPunkt;
  106.                                                         (* 16 * 16 =  256 *)
  107.                           Modus:                        Moden;    (*  4 *)
  108.                           Pfad, Name:                   eineInfo;(* 120 *)
  109.                           Max:                          CARDINAL;  (* 2 *)
  110.                           TabWeite:                     CARDINAL;  (* 2 *)
  111.                           NaechsterPuffer:              einPufferPointer;
  112.                           
  113.                           SchreibZaehler:               CARDINAL;  (* 2 *)
  114.                             (* Fuer Autosave *)
  115.                           tageszeit:                    CARDINAL;  (* 2 *)
  116.                           datum:                        CARDINAL;  (* 2 *)
  117.                         END (* einPufferDeskriptor *); (* TSIZE =    *)
  118.  
  119. VAR     PuffRecSize: (*TSIZE (einPufferDeskriptor)*) LONGCARD;
  120.  
  121. (* Von ScreenBase *)
  122.  
  123. CONST   (* Definition wichtiger ASCII-Codes (NICHT Tastencodes! *)
  124.         nul =           0C;     (* ASCII-Nul, kein Zeichen *)
  125.  
  126.         bel =           07C;
  127.         backspace =     10C;    (* rueckwaerts loeschen *)
  128.         tab =           11C;    (* in 8er-Positionen einruecken *)
  129.  
  130.         (* Bildschirmattribute: *)
  131.  
  132.         hasinsert =     FALSE;
  133.         hasdelete =     FALSE;
  134.  
  135.         escape =        33C;
  136.         lf =            12C;
  137.         cr =            15C;
  138.  
  139.         linedel =      115C;
  140.         lineins =      114C;
  141.         
  142.         Ja =            1;
  143.         Nein =          2;
  144.         Abbruch =       3;
  145.  
  146. TYPE    einButton =        (Left, Right);
  147.         ButtonSet =        SET OF einButton;
  148.  
  149. VAR     ScreenHandle:                 DeviceHandle;
  150.         ApId:                         GemHandle;
  151.         WindowHandle:                 CARDINAL;
  152.         CharWidth, CharHeight:        CARDINAL;
  153.         ScreenWidth, ScreenHeight:    CARDINAL;
  154.         LineHeight:                   CARDINAL;
  155.                                       
  156.         CharsInLine:                  CARDINAL;
  157.         LinesOnScreen:                CARDINAL;
  158.  
  159. (* Von EditBefehle *)
  160.         
  161. TYPE    einBefehl =
  162.  (nothing,
  163.  
  164.  (* Cursorbewegungen: *)
  165.   cursup, cursdown, cursleft, cursright,
  166.   Rollup, Rolldown, RollLeft, RollRight, RollFLeft, RollFRight,
  167.   Wortleft, Wortrigt, ZeilAnf, ZeilEnde,
  168.   Seitup, Seitdown, zumDAnf, zumDEnde, home, InsertBlank,
  169.   Bildoben, Bildunten,
  170.   tabulator, backtab, return,
  171.  
  172.  (* Maustasten: *)
  173.   LeftMous, RightMous,
  174.  
  175.  (* Suchen & Tauschen: *)
  176.   SuchString, StriTausch, SuchWort, WortTausch, PickWort, PickTausch,
  177.   WeitSuch, QueryError, (* naechste Compilerfehlermeldung *)
  178.   Lookup,
  179.  
  180.  (* Löschen/Einfügen: *)
  181.   DelLChar, DelRChar, DelLWort, DelRWort, DelBZeil, DelEZeil,
  182.   PopDeleteLine, PopCopyLine,
  183.   RestoreCurrentLine, CopyLastBufferLine, PopLastBufferLine, ZeilIns,
  184.   
  185.  (* Modus/Parameter: *)
  186.   insert, indent, TextProg, RandOffset, TabLaen,
  187.   TextParam, GlobParam, LoadParam, BackupAnlegen,
  188.   SteuerZeichenAnzeige,
  189.   Grossklein, Wortsuche,
  190.   
  191.  (* Marken, Goto: *)
  192.   set1Mark, set2Mark, set3Mark, zur1Mark, zur2Mark, zur3Mark,
  193.   setAMark, setEMark, zurAMark, zurEMark,
  194.   zuNrZeile, LetztePos, (* Letzte Editstelle *) LetzteSuchPos,
  195.   
  196.  (* Dynamische Merker: *)
  197.   MerkList, MerkPunkt, SetzList, SetzPunkt,
  198.   WaehleListe,
  199.  
  200.  (* Blockmarken/Operationen: *)
  201.   BlockMLoe, CopyToClipboard, CutToClipboard, DeleteBlock, Paste, Kopier,
  202.   Verschieb, GEMKlemmbrettEinAus, Einrueck, SelectWord, SelectLine,
  203.   SelectParagraph, SelectAll,
  204.  
  205.  (* Laden/Speichern/Löschen: *)
  206.   TextLoad, TextSave, BlockRead, BlockWrit, Update,
  207.   LoescheText,
  208.   TextFragLad, LoescheAllePuffer, SpeichereAllePuffer,
  209.   LoadFiles,
  210.   
  211.  (* Puffer setzen: *)
  212.   SetHelp, InsertPuff,
  213.   PufferWaehlen, NaechstenPuffer,
  214.   LoeschUndo, KillPuff, LoeschAlle,
  215.  
  216.  (* Metabefehle: *)
  217.   ExitEditor,
  218.   Quit, QuitCompile, QuitCompileRun, Compile, Make, MakeExec,
  219.   help, EditBlock,
  220.   TextVergleich, ZeitUndDatum,
  221.   CallFilebox (* Pfad ändern *), GMECopyrightBox,
  222.  
  223.  (* Verschiedene: *)
  224.   AsciiOrd,
  225.  
  226.   error);
  227.  
  228.         Befehlssatz =   SET OF einBefehl;
  229.  
  230. (* Von EditBuffer *)
  231.  
  232. PROCEDURE InitBuffer;
  233.  
  234. VAR     UndoPuffer:             einPufferPointer; (* eineZeile; *)
  235.         ClipBoard:              einPufferPointer;
  236.         HilfsPuffer:            einPufferPointer;
  237.         ConfigPuffer:           einPufferPointer;
  238.         EditPuffer:             einPufferPointer;
  239.         AlternEdit:             einPufferPointer;
  240.         DruckPuff:              einPufferPointer;
  241.         FehlerPuffer:           einPufferPointer;
  242.         MailPuffer:             einPufferPointer;
  243.         GolemPuffer:            einPufferPointer;
  244.         SendePuffer:            einPufferPointer;
  245.         Tausch:                 einPufferPointer;
  246.         PSCPuffer:              einPufferPointer;
  247.         LoadPuffer:             einPufferPointer;
  248.         DruckerBatch:           einPufferPointer;
  249.         TextVergleichP:         einPufferPointer;
  250.         WaehlPuffer:            einPufferPointer;
  251.         StartPuffer:            einPufferPointer;
  252.         Puffer1, Puffer2,
  253.         Puffer3, Puffer4:       einPufferPointer;
  254.         
  255.         undone:                 BOOLEAN;
  256.  
  257. (* Von KeyBase *)
  258.  
  259. CONST   cTastaturEbenen =       15;
  260.  
  261. CONST   MinScanCode =   1;
  262.         MaxScanCode =   131;
  263.  
  264.  
  265. TYPE    einStatusKey = (Shift, Control, Alternate, Caps,
  266.                         RMouse, LMouse);
  267.  
  268.         einStatus =     SET OF einStatusKey;
  269.  
  270.         einKey = (NoKey,
  271.         
  272.     (* Funktionstasten: *)
  273.   F1, F2, F3, F4, F5, F6, F7, F8, F9, F10,
  274.  
  275.     (* Tastaturblock: *)
  276.   TEsc, T1, T2, T3, T4, T5, T6, T7, T8, T9, T0, Tsz, TApo, TNum, TBackspace,
  277.   TTab, Tq, Tw, Te, Tr, Tt, Tz, Tu, Ti, To, Tp, Tue, TPlus, TRet, TDel,
  278.   Ta, Ts, Td, Tf, Tg, Th, Tj, Tk, Tl, Toe, Tae, TTild,
  279.   TGr, Ty, Tx, Tc, Tv, Tb, Tn, Tm, TKomma, TPunkt, TMinus,
  280.   TLeer,
  281.   
  282.     (* Cursorblock: *)
  283.   CHelp, CUndo, CInsert, CUp, CHome,
  284.   CLeft, CDown, CRight,
  285.   
  286.     (* Numerikblock: *)
  287.   NLeftp, NRightp, NSlash, NAsterix,
  288.   N7, N8, N9, NMinus,
  289.   N4, N5, N6, NPlus,
  290.   N1, N2, N3,
  291.   N0, NPoint, NEnter, KeyError);
  292.  
  293. TYPE    eineScanTabelle =  ARRAY [MinScanCode..MaxScanCode] OF einKey;
  294.  
  295. VAR     ScanTab:        eineScanTabelle;
  296.   
  297.   PROCEDURE KeyReady(): BOOLEAN;
  298.   PROCEDURE ReadKey (VAR k: einKey; VAR s: einStatus);
  299.   PROCEDURE KillKeyInput;
  300.   PROCEDURE TastInit;
  301.   PROCEDURE Init;
  302.   PROCEDURE TastReset;
  303.  
  304. (* ScreenBase *)
  305.  
  306. PROCEDURE GetVersion (VAR version: ARRAY OF CHAR);
  307.   
  308. PROCEDURE WrapOff;
  309. PROCEDURE WrapOn;
  310.  
  311. PROCEDURE WriteChar (c: CHAR);
  312. PROCEDURE WriteLine (REF s: ARRAY OF CHAR);
  313. (* schnelle Stringausgabe, kein LF *)
  314. PROCEDURE WriteConst (REF s: ARRAY OF CHAR);
  315.  
  316. PROCEDURE Trace (REF s: ARRAY OF CHAR);
  317. PROCEDURE WriteLn; (* CR + LF *)
  318. PROCEDURE InsertLn;
  319. PROCEDURE DeleteLn;
  320. PROCEDURE WhereXY (VAR x, y: CARDINAL);
  321. PROCEDURE GotoXY (x, y: CARDINAL);
  322. PROCEDURE CursorEin;
  323. PROCEDURE CursorAus;
  324. PROCEDURE CursorStumm;
  325. PROCEDURE CursorSchnell;
  326. PROCEDURE LoescheZeile;
  327. PROCEDURE LoescheBild;
  328. PROCEDURE LoescheEndeBild;
  329. PROCEDURE HighLight;
  330. PROCEDURE Normal;
  331.  
  332. PROCEDURE MausEin;
  333. PROCEDURE MausAus;
  334. PROCEDURE MausBusy;
  335.  
  336. PROCEDURE MausPos (VAR x, y: CARDINAL; VAR bewegt: BOOLEAN;
  337.                    VAR Knoepfe: ButtonSet);
  338.  
  339. PROCEDURE MausDoppel (VAR x, y: CARDINAL; VAR bewegt: BOOLEAN;
  340.                    VAR Knoepfe: ButtonSet);
  341.  
  342. PROCEDURE Nachricht (REF m: ARRAY OF CHAR);
  343. PROCEDURE FrageJaNein (default: CARDINAL; m: ARRAY OF CHAR): BOOLEAN;
  344. PROCEDURE Auswahl (VAR default: CARDINAL; m: ARRAY OF CHAR);
  345. PROCEDURE TopBox;
  346. PROCEDURE ClearAES;
  347.  
  348. (* Von EditBase *)
  349.  
  350. VAR     AutoCount:      CARDINAL;
  351. VAR     DoClipboard:    BOOLEAN;
  352.  
  353. PROCEDURE PuffInit (VAR Puff: einPufferPointer);
  354. PROCEDURE Loeschen (VAR Puff: einPufferPointer);
  355. PROCEDURE PufferLeer (Puff: einPufferPointer): BOOLEAN;
  356. PROCEDURE InsertPuffer (Puff: einPufferPointer): einPufferPointer;
  357. PROCEDURE FindeLeerpuffer (Puff: einPufferPointer): einPufferPointer;
  358. PROCEDURE DeletePuffer (VAR Puff: einPufferPointer);
  359. PROCEDURE GetLine (p: einLinePointer; VAR s: ARRAY OF CHAR);
  360.   (* Kopiere Zeileninhalt in String *)
  361. PROCEDURE PutConstLine (VAR p: einLinePointer; REF s: ARRAY OF CHAR);
  362. PROCEDURE PutLine (VAR p: einLinePointer;
  363.                    REF s: ARRAY OF CHAR);
  364.   (* Kopiere String in eine Zeile (Allocate optimiert) *)
  365. PROCEDURE DeAllocLine (VAR p: einLinePointer);
  366. PROCEDURE AllocLine (VAR p: einLinePointer; groesse: CARDINAL);
  367.  
  368. (************************** Von EditDirectory *****************)
  369.  
  370. PROCEDURE GetDirectory (VAR Pfad, FileName: ARRAY OF CHAR;
  371.                         Meldung: ARRAY OF CHAR;
  372.                         VAR Butt: INTEGER; GEM: BOOLEAN);
  373. PROCEDURE GetPfad (VAR pf: ARRAY OF CHAR);
  374. PROCEDURE DeleteTail (VAR s: ARRAY OF CHAR);
  375.  
  376. END GMEBase.
  377.  
  378.